#include "style_btn.h"

static lv_color_t darken(const lv_color_filter_dsc_t* dsc, lv_color_t color,
                         lv_opa_t opa) {
  LV_UNUSED(dsc);
  return lv_color_darken(color, opa);
}

void style_init(void) {
  /*Create a simple button style*/
  // 初始化按钮样式
  lv_style_init(&style_btn);
  // 设置按钮的圆角
  lv_style_set_radius(&style_btn, 10);
  // 设置按钮的背景不透明度
  lv_style_set_bg_opa(&style_btn, LV_OPA_COVER);
  // 设置按钮的背景颜色
  lv_style_set_bg_color(&style_btn, lv_palette_lighten(LV_PALETTE_GREY, 3));
  // 设置按钮背景渐变色
  lv_style_set_bg_grad_color(&style_btn, lv_palette_main(LV_PALETTE_GREY));
  // 设置按钮渐变方向
  lv_style_set_bg_grad_dir(&style_btn, LV_GRAD_DIR_VER);

  // 设置按钮边框颜色
  lv_style_set_border_color(&style_btn, lv_color_black());
  // 设置按钮边框不透明度
  lv_style_set_border_opa(&style_btn, LV_OPA_20);
  // 设置按钮边框宽度
  lv_style_set_border_width(&style_btn, 2);

  // 设置按钮文本颜色
  lv_style_set_text_color(&style_btn, lv_color_black());

  /*Create a style for the pressed state.
   *Use a color filter to simply modify all colors in this state*/
  // 初始化按钮按下时的样式
  static lv_color_filter_dsc_t color_filter;
  // 初始化颜色过滤器
  lv_color_filter_dsc_init(&color_filter, darken);
  lv_style_init(&style_button_pressed);
  // 设置按钮颜色过滤器，按下后颜色变深
  lv_style_set_color_filter_dsc(&style_button_pressed, &color_filter);
  // 设置按钮颜色过滤器不透明度
  lv_style_set_color_filter_opa(&style_button_pressed, LV_OPA_20);

  /*Create a red style. Change only some colors.*/
  // 初始化红色按钮样式
  lv_style_init(&style_button_red);
  // 从调色板中选取红色设置按钮背景色
  lv_style_set_bg_color(&style_button_red, lv_palette_main(LV_PALETTE_RED));
  // 设置背景渐变色，亮红色
  lv_style_set_bg_grad_color(&style_button_red,
                             lv_palette_lighten(LV_PALETTE_RED, 3));
}